package com.aidex.biz.utils;
import com.aidex.common.utils.StringUtils;
import com.aidex.framework.cache.ConfigUtils;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;


//导入可选配置类
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;


// 导入对应SMS模块的client
import com.tencentcloudapi.sms.v20210111.SmsClient;


// 导入要请求接口对应的request response类
import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;

public class TencentSmsUtils {
    private final  static String secretId= ConfigUtils.getConfigByKeyNoCache("tencent.sms.secretId").getConfigValue();
            // "AKIDfDYDmBSZVIznVzEEMNjsqeUG5pPmyw0s";
    private final  static String secretKey=ConfigUtils.getConfigByKeyNoCache("tencent.sms.secretKey").getConfigValue();
                    // "mKgstiIF0bBieXN8mCORGyXw79zb9Tn0";

    public final static String templateId_1=ConfigUtils.getConfigByKeyNoCache("tencent.sms.templateId_1").getConfigValue();
            // "1909688";
    public final static String templateId_2=ConfigUtils.getConfigByKeyNoCache("tencent.sms.templateId_2").getConfigValue();
                    // "2055986";
    public final static String signName=ConfigUtils.getConfigByKeyNoCache("tencent.sms.signName").getConfigValue();
    // 车优融

    public final static String sdkAppId=ConfigUtils.getConfigByKeyNoCache("tencent.sms.sdkAppId").getConfigValue();
    // 1400752196
    public final static String area=ConfigUtils.getConfigByKeyNoCache("tencent.sms.area").getConfigValue();
    public static String SmsSend(String templateId,String cusName,String phone ) {
        try{


        Credential cred = new Credential(secretId, secretKey);
        HttpProfile httpProfile = new HttpProfile();
        httpProfile.setReqMethod("POST");
        httpProfile.setConnTimeout(60);
        httpProfile.setEndpoint("sms.tencentcloudapi.com");
        ClientProfile clientProfile = new ClientProfile();
        clientProfile.setSignMethod("HmacSHA256");
        clientProfile.setHttpProfile(httpProfile);
        /* 实例化要请求产品(以sms为例)的client对象
         * 第二个参数是地域信息，可以直接填写字符串ap-guangzhou，支持的地域列表参考 https://cloud.tencent.com/document/api/382/52071#.E5.9C.B0.E5.9F.9F.E5.88.97.E8.A1.A8 */
        SmsClient client = new SmsClient(cred, area,clientProfile);
        SendSmsRequest req = new SendSmsRequest();

        /* 短信应用ID: 短信SdkAppId在 [短信控制台] 添加应用后生成的实际SdkAppId，示例如1400006666 */
        // 应用 ID 可前往 [短信控制台](https://console.cloud.tencent.com/smsv2/app-manage) 查看
         // String sdkAppId = "1400752196";
        req.setSmsSdkAppId(sdkAppId);
        /* 短信签名内容: 使用 UTF-8 编码，必须填写已审核通过的签名 */
        // 签名信息可前往 [国内短信](https://console.cloud.tencent.com/smsv2/csms-sign) 或 [国际/港澳台短信](https://console.cloud.tencent.com/smsv2/isms-sign) 的签名管理查看
        // String signName = "车优融";
        req.setSignName(signName);
        /* 模板 ID: 必须填写已审核通过的模板 ID */
        // 模板 ID 可前往 [国内短信](https://console.cloud.tencent.com/smsv2/csms-template) 或 [国际/港澳台短信](https://console.cloud.tencent.com/smsv2/isms-template) 的正文模板管理查看
        // String templateId = templateId;
        req.setTemplateId(templateId);
        /* 模板参数: 模板参数的个数需要与 TemplateId 对应模板的变量个数保持一致，若无模板参数，则设置为空 */
            if(!StringUtils.isEmpty(cusName)){
                String[] templateParamSet = {cusName};
                req.setTemplateParamSet(templateParamSet);
            }

        /* 下发手机号码，采用 E.164 标准，+[国家或地区码][手机号]
         * 示例如：+8613711112222， 其中前面有一个+号 ，86为国家码，13711112222为手机号，最多不要超过200个手机号 */
            if(!StringUtils.isEmpty(phone)){
                String[] phoneNumberSet={phone};
                req.setPhoneNumberSet(phoneNumberSet);
            }

        /* 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的
         * 返回的 res 是一个 SendSmsResponse 类的实例，与请求对象对应 */
        SendSmsResponse res = client.SendSms(req);
        // 输出json格式的字符串回包
        System.out.println(SendSmsResponse.toJsonString(res));
            return SendSmsResponse.toJsonString(res);
        }catch (TencentCloudSDKException sdkException){
            return sdkException.getErrorCode();
        }
    }

    public static void main(String[] args) throws TencentCloudSDKException {
        System.out.println(TencentSmsUtils.SmsSend(TencentSmsUtils.templateId_1,"xiongdada",
                "17771704470"));
    }
}
